'''题目描述：
编写一个函数score_analyzer，接收学生成绩列表（元素为整数，范围0-100），返回以下统计结果：
1.	平均分（保留1位小数）；
2.	最高分和最低分；
3.	及格率（60分及以上为及格，百分比保留1位小数）。
要求：
•	若输入列表为空，返回None；
•	若列表中存在非整数或超出0-100的成绩，抛出ValueError并提示"无效成绩"。
输入：[85, 92, 78, 60, 55]
输出：
{
"average": 74.0,
"max": 92,
"min": 55,
"pass_rate": "80.0%"
}'''

def score_analyzer(scores):
    if not scores:
        return None
    #any() 函数判断是否存在任何一个不满足上述条件的成绩
    if any(not isinstance(s, int) or not 0 <= s <= 100 for s in scores):
        raise ValueError("无效成绩")
    #round(..., 1) - 将计算结果四舍五入到1位小数
    average = round(sum(scores) / len(scores), 1)
    max_score = max(scores)
    min_score = min(scores)
    pass_count = sum(1 for s in scores if s >= 60)
    pass_rate = round((pass_count / len(scores)) * 100, 1)
    
    return {
        "average": average,
        "max": max_score,
        "min": min_score,
        "pass_rate": f"{pass_rate}%"
    }

# 示例用法
result = score_analyzer([85, 92, 78, 60, 55])
print(result)
# 输出: {'average': 74.0, 'max': 92, 'min': 55, 'pass_rate': '80.0%'}